<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="./js/vue.js"></script>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            padding: 5px;
            background-color: skyblue;
        }

        .box1 {
            padding: 5px;
            background-color: orange;
        }

        .list {
            width: 200px;
            height: 200px;
            background-color: peru;
            overflow: auto;
        }

        li {
            height: 100px;
        }
    </style>
</head>
<!-- 
    事件的基本使用
    1.使用v-on:xxx 或 @xxx 绑定事件 其中xxx是事件名；
    2.事件的回调需要配置再methods对象中，最终会在vm上；
    3.methods中配置的函数，不要用箭头函数！！否则this不是vm 而是window;
    4.methods中配置的函数，都是被Vue所管理的函数，this的指向是vm 或 组件实例对象；
    5.@click = 'demo' 和 @click = 'demo($event)' 效果一致，但后者可以传参；
 -->

<body>
    <div id="root">
        <h2>欢迎来到{{name}}学习</h2>
        <!-- 阻止默认事件（常用） -->
        <a href="http://www.atguigu.com" @click.prevent="showInfo">点我提示信息</a>

        <!-- 阻止事件冒泡（常用） -->
        <div class="demo1" @click="showInfo">
            <button @click.stop="showInfo">点我提示信息</button>
        </div>

        <!-- 事件只触发一次（常用） -->
        <button @click.once="showInfo">点我提示信息</button>

        <!-- 使用事件的捕获模式   一般事件先冒泡 后捕获-->
        <div class="box1" @click="showMsg(1)">
            div1
            <div class="box2" @click="showMsg(2)">
                div2
            </div>
        </div>

        <!-- 只有event.target 是当前操作的元素时才触发事件 -->
        <div class="demo1" @click="showInfo">
            <button @click="showInfo">点我提示信息</button>
        </div>

        <!-- 事件的默认行为立即执行 无需等待事件回调执行完毕 -->
        <ul @wheel.passive="demo" class="list">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>

    </div>
    <script type="text/javascript">
        const vm = new Vue({
            el: '#root',
            data: {
                name: '尚硅谷'
            },
            methods: {
                showInfo(event) {
                    alert('好好学习！')
                },
                showMsg() {
                    console.log('msg');
                },
                demo() {
                    for (let i = 0; i < 1000; i++) {
                        console.log(111);
                    }
                    console.log('累坏 ');
                },

            }
        })
    </script>
</body>

</html>